package business;

import java.util.ArrayList;
import java.util.Date;

import persistence.db.DataSet;
import persistence.model.AbstractModel;
import persistence.model.AnneeEtude;
import persistence.model.SEE;
import persistence.model.Service;
import utility.Record;

public class SEEBL {

	private SEE see = null;
	
	
	public SEEBL() {}
	
	public SEEBL(int id) {
		see = (SEE) SEE.all().get(id);
	}
	
	/**
	 * @return Retourne la liste des services 
	 */
	public ArrayList<Record> getListeService()
	{
		ArrayList<Record> listeServices = new ArrayList<Record>();
		
		for (AbstractModel s : see.getServices())
		{
			Service serviceCourant = (Service) s;
			
			int serviceId = serviceCourant.getId();
			String serviceNom = "SERVICE " + serviceCourant.getId();
			
			listeServices.add(new Record(serviceId, serviceNom));
		}
		
		return listeServices;
	}
	
	/**
	 * @return retourne si la demande d'ajout ou de modification est valide ou non
	 */
	public boolean verifierValiditeModif(){
		//TODO
		return true;
	}
	
	/**
	 * @return retourne si la demande de suppression est valide ou non
	 */
	public boolean verifierValiditeSuppr(){
		//TODO
		return true;
	}

	/**
	 * @param id : identifiant du SEE
	 * @param nombreDePeriodes : nombre de périodes que comprend le SEE
	 */
	public void ajouterSEE(int id, int nombreDePeriodes, int matiereId, int idTypeEns, DataSet ds) {
		see = new SEE(id, nombreDePeriodes,matiereId, idTypeEns, ds);
		see.save();
	}
	
	/**
	 * @param id : identifiant du SEE
	 * @param nombreDePeriodes : nombre de périodes que comprend le SEE
	 */
	public void modifierSEE(int id, int nombreDePeriodes, int matiereId, int idTypeEns, DataSet ds) {
		see = new SEE(id, nombreDePeriodes, matiereId, idTypeEns, ds);
		see.save(id);
	}
	
	/**
	 * @param id : identifiant du SEE
	 * @param nombreDePeriodes : nombre de périodes que comprend le SEE
	 */
	public void supprimerSEE() {
		see = new SEE(this.getIdSEE());
		see.delete();
	}
	
	
	/* Ensemble des getters et setters -> delegation vers la persistance */
	
	public int getIdSEE() {
		return see.getId();
	}

	public void setIdSEE(int idSEE) {
		see.setId(idSEE);
	}
	
	public int getIdTypeEnseignement() {
		return see.getIdTypeEnseignement();
	}

	public int getNombreDePeriodes() {
		return see.getNombreDePeriodes();
	}

	public void setNombreDePeriodes(int nombreDePeriodes) {
		see.setNombreDePeriodes(nombreDePeriodes);
	}
	
	public int getIdMatiere() {
		return see.getIdMatiere();
	}

	public void setIdMatiere(int idMatiere) {
		see.setIdMatiere(idMatiere);
	}
}
